home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er 1995 July
/
64er_Magazin_95-07_1995_Markt__Technik_de_Side_A.d64
/
reldat v2.0
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2022-10-26
|
7KB
|
249 lines
100 rem *************************
110 rem * demoprogramm fuer *
120 rem * relative dateiver- *
130 rem * verwaltung *
140 rem * 1995 by 64'er magazin *
150 rem *************************
597 rem *************************
598 rem * programm-handler *
599 rem *************************
600 ga=8: rem floppy-geraeteadresse
605 mp=1: rem flag fuer menuepunktewahl
606 gosub800: rem dimensionierung
610 poke53280,1:poke53281,1:poke646,0:printchr$(14)chr$(8)chr$(147)
612 for i=1 to 5
613 read me$(i)
614 next i
615 gosub9900
620 printchr$(19)chr$(13)chr$(13)tab(10)chr$(18)" [210][197][204][193][212][201][214][197] [193][196][210][197][211][211][196][193][212][197][201] "chr$(13)
629 for c=1 to 5
630 ifmp=c then printtab(10)chr$(18)me$(mp)
635 ifmp<>c then printtab(10)me$(c)
640 next c
680 get t$
682 ift$=chr$(17)then mp=mp+1:ifmp>5thenmp=5
684 ift$=chr$(145)then mp=mp-1:ifmp<1thenmp=1
686 ift$=chr$(13)then 780
690 goto620
780 on mp gosub 1100,7000,8000,2500,2400
790 goto 620
797 rem ****************************
798 rem * variablen dimensionieren *
799 rem ****************************
800 dm=400: rem vorgesehene datensatzanzahl
810 dim id$(dm): rem schluesselwort (indexfeld)
820 dim in(dm): rem dazugehoerige recordnummer
830 dim ds$(6): rem datenfelder - bei bedarf erhoehen oder reduzieren!
840 return
987 rem ****************************
988 rem * rel.datei anlegen/oeffnen*
989 rem ****************************
990 rem lf=log.filenummer
991 rem sa=sekundaeradresse
992 rem dn$=dateiname
993 rem rl=recordlaenge
1000 open15,8,15: rem floppy-kommandokanal oeffnen
1010 open lf,ga,sa,dn$+",l,"+chr$(rl): rem rel-datei oeffnen
1020 return
1097 rem ************************
1098 rem * datei initialisieren *
1099 rem ************************
1100 lf=1:sa=2:dn$="adressen":rl=72:gosub1000: rem rel-datei adressen oeffnen
1110 open2,8,3,"index,s,r": rem seq-datei index zum lesen oeffnen
1120 gosub4000: rem fehlerkanal lesen
1130 if er<>0 then ad=0:goto1190: rem datei noch nicht angelegt
1135 input#2,ad: rem anzahl der datensaetze
1140 for i=1 to ad
1142 input#2,id$(i),in(i)
1144 next i: rem indexdatei lesen
1190 fl=1: rem kennzeichen 'datei im rechner'
1192 close 2: rem seq. indexdatei schliessen
1195 printchr$(13)chr$(13)tab(9)"waehlen mit <[195][210][211][210] auf/ab>"
1196 printtab(10)"aktivieren mit <[210][197][212][213][210][206]>"
1199 return
1987 rem ****************************
1988 rem * auf record positionieren *
1989 rem ****************************
1990 rem sa = sekundaeradresse
1991 rem rn = record-nummer
1992 rem rp = position in record
2000 hb=int(rn/256): lb=rn-256*hb: rem record-nr. in high/low-byte teilen
2010 print#15,"p"+chr$(sa)+chr$(lb)+chr$(hb)+chr$(rp)
2020 return
2397 rem ************************
2398 rem * programm beenden *
2399 rem ************************
2400 close1:close15:open4,8,15,"i":close4:printchr$(147):end
2497 rem ************************
2498 rem * dateiarbeit beenden *
2499 rem ************************
2500 if fl=0 then gosub9500: return
2509 print#15,"s:index": rem alte indexdatei loeschen
2510 open2,8,3,"index,s,w": rem aktualisierte indexdatei zum schreiben oeffnen
2520 print#2,ad: rem anzahl der records
2530 for c=1 to ad
2540 print#2,id$(c)","in(c)
2550 next c: rem indexdatei sichern
2560 gosub 3000
2570 printchr$(147):end
2996 rem ************************
2997 rem * rel-datei schliessen *
2998 rem ************************
2999 rem lf=log. filenummer
3000 close lf: rem rel-datei schliessen
3010 close 15: rem floppy-kanal schl.
3020 return
3997 rem **********************
3998 rem * floppy-fehlerkanal *
3999 rem **********************
4000 input#15,er,er$,tr,sk
4010 rem print er;er$;tr;sk:ohne 'rem' erscheint fehlermeldung auf dem screen!
4020 return
4996 rem **********************
4997 rem * feldl. korrigieren *
4998 rem **********************
4999 rem beispiel fuer sechs datenfelder ds$(1)-ds$(6)
5000 le$=" ": rem leerstring zum auffuellen
5010 ds$(1)=left$(ds$(1)+left$(le$,abs(15-len(ds$(1)))),15): rem nachname
5020 ds$(2)=left$(ds$(2)+left$(le$,abs(10-len(ds$(2)))),10): rem vorname
5030 ds$(3)=left$(ds$(3)+left$(le$,abs(15-len(ds$(3)))),15): rem strasse
5040 ds$(4)=left$(ds$(4)+left$(le$,abs(5-len(ds$(4)))),5): rem postleitzahl
5050 ds$(5)=left$(ds$(5)+left$(le$,abs(15-len(ds$(5)))),15): rem wohnort
5060 ds$(6)=left$(ds$(6)+left$(le$,abs(11-len(ds$(6)))),11): rem telefon
5099 return
5997 rem *************************
5998 rem * record zusammenfassen *
5999 rem *************************
6000 rc$="":rem variable fuer inhalt des gesamt-records
6010 for c=1 to 6: rem =menge!
6020 rc$=rc$+ds$(c)
6030 next c
6040 return
6997 rem *************************
6998 rem * daten eingeben *
6999 rem *************************
7000 if fl=0 then gosub9500: return
7009 printchr$(147)left$(la$,79)
7010 printchr$(19)chr$(18)tab(2)" [196]ateneingabe-[205]aske "tab(23)"[210]ecord-[206]r.: ";ad+1
7015 print
7020 printtab(2)"[206]achname: "
7022 printtab(2)"[214]orname : "
7024 printtab(2)"[211]trasse : "
7026 printtab(2)"[208][204][218] : "
7028 printtab(2)"[215]ohnort : "
7030 printtab(2)"[212]elefon : "
7032 print:printleft$(la$,79)
7040 sp=12: rem eingabespalte bleibt gleich!
7045 for zl=2 to 7
7047 gosub 7900: rem eingabe-cursor positionieren
7050 poke19,64:inputds$(zl-1):poke19,0:print
7060 next zl
7070 rem eingabe in indexdatei vermerken
7080 ad=ad+1: rn=ad: rem datensatzanzahl inkrementieren
7090 id$(ad)=ds$(1): rem schluesseldatenfeld
7100 in(ad)=rn: rem recordnummer
7110 :
7120 rem datenfelder mit passender laenge ausstatten
7130 gosub 5000: rem unterprogramm muss auf sechs datenfelder eingerichtet sein
7199 :
7200 rem dateneingabe zur speicherung zusammenfassen
7210 gosub 6000
7228 rem ***********************
7229 rem * datensatz speichern *
7230 rem ***********************
7240 rn=ad:rp=1:gosub 2000: rem record positionieren
7250 print#lf,rc$: rem datensatz schreiben
7260 gosub 4000: rem fehlerkanal
7270 printchr$(13)tab(6)chr$(18)" [196]atensatz wurde gesichert!"
7272 for t=1 to 1500: next t: printchr$(147)
7280 gosub9900:return
7888 rem *************************
7898 rem * cursor-positionierung *
7899 rem *************************
7900 poke214,zl:poke 211,sp
7902 sys 58640
7904 return
7997 rem *************************
7998 rem * daten ausgeben *
7999 rem *************************
8000 if fl=0 then gosub 9500 :return
8010 printchr$(147):poke19,64:input"[201]ndex-[194]egr.:";ix$:poke19,0:rem indexabfrage
8020 for c=1 to ad: rem indexdatei durchsuchen
8030 if ix$=id$(c) then gn=c:c=ad:next c:goto 8100: rem index gefunden
8040 next c
8050 printchr$(147)"[211]chluesselwort falsch oder":print"nicht vorhanden!"
8052 fort=1 to 1000:next
8060 printchr$(147):gosub9900:return
8100 rn=gn:rp=1:rc$="":gosub2000:rem record postionieren
8110 input#lf,rc$: rem record holen
8119 rem **************************
8120 rem * gesamtstring aufteilen *
8121 rem **************************
8130 ds$(1)=mid$(rc$,1,15): rem nachname
8132 ds$(2)=mid$(rc$,16,10): rem vorname
8134 ds$(3)=mid$(rc$,26,15): rem strasse
8136 ds$(4)=mid$(rc$,41,5): rem plz
8137 ds$(5)=mid$(rc$,46,15): rem wohnort
8138 ds$(6)=mid$(rc$,61,11): rem telefon
8139 rem *****************************
8140 rem datensatz auf screen ausgeben
8141 rem *****************************
8142 printchr$(147)left$(la$,79)
8143 printchr$(19)chr$(18)tab(2)" [196]atenausgabe "tab(23)"[210]ecord-[206]r.: ";rn
8150 printchr$(13):for c=1 to 6
8160 printtab(5)ds$(c)
8170 next c
8172 print:printleft$(la$,79)+chr$(145)+chr$(145)
8180 gosub8300
8185 printchr$(147):gosub9900:return
8195 rem **************************
8196 rem * druckausgabe *
8197 rem **************************
8200 open4,4,7:cmd1
8210 print#4,"[210]ecord-[206]r.:";str$(rn)
8220 for c=1 to 6
8230 print#4,ds$(c)
8240 next
8250 print#4:close4
8260 return
8300 print:printtab(10)chr$(18)" [196]atensatz drucken (j/n) "
8310 gett$
8320 ift$="j"thengosub8200:return
8330 ift$="n"thenreturn
8340 goto8310
9497 rem **************************
9498 rem * keine datei geoeffnet! *
9499 rem **************************
9500 printchr$(147):gosub 9900
9530 printchr$(19)chr$(13)chr$(13)tab(13)" [198][197][200][204][197][210][205][197][204][196][213][206][199] "chr$(13)chr$(13)
9535 printtab(12)"[196]atei wurde noch"
9536 printtab(12)"nicht initialisiert"
9537 printtab(12)"oder angelegt!!!"
9590 fort=1to1500:next
9592 printchr$(147):gosub9900
9599 return
9897 rem *************************
9898 rem * unterpr. window *
9899 rem *************************
9900 e1$="[176]":e2$="[174]":e3$="[173]":e4$="[189]"
9901 ul$="[171]":ur$="[179]":ln$=""
9904 fori=1to22:ln$=ln$+"[192]":next
9905 la$=ln$+ln$
9906 printchr$(19):printtab(9)e1$ln$e2$
9907 zl=2:sp=9:gosub7900
9908 for c=1 to 7
9910 printtab(9)"[221]"tab(32)"[221]"
9911 next c
9913 printtab(9)e3$ln$e4$
9915 zl=3:sp=9:gosub7900
9916 printtab(9)ul$ln$ur$
9920 return
9997 rem *************************
9998 rem * menuepunkte *
9999 rem *************************
10000 data" [196]atei initialisieren "
10010 data" [196]ateneingabe "
10020 data" [196]atenausgabe "
10030 data" [196]atei schliessen "
10040 data" [208]rogramm beenden "